// pages/login/login.js
const { wechatLogin, phoneLogin, sendSmsCode, checkLoginStatus } = require('../../utils/auth.js')
const { showError, showSuccess, validatePhone } = require('../../utils/util.js')

Page({
  data: {
    showPhoneLogin: false,
    agreementChecked: false,
    phone: '',
    verificationCode: '',
    codeSending: false,
    countdown: 0
  },

  onLoad() {
    // 检查是否已经登录
    this.checkAutoLogin()
  },

  /**
   * 检查自动登录
   */
  checkAutoLogin() {
    checkLoginStatus().then((isLoggedIn) => {
      if (isLoggedIn) {
        // 已登录，跳转到主页或头像创建页
        this.redirectAfterLogin()
      }
    }).catch(() => {
      // 登录检查失败，停留在登录页
      console.log('登录状态检查失败')
    })
  },

  /**
   * 微信登录
   */
  handleWechatLogin() {
    if (!this.data.agreementChecked) {
      showError('请先同意用户协议和隐私政策')
      return
    }

    wechatLogin().then((data) => {
      showSuccess('登录成功')
      this.redirectAfterLogin()
    }).catch((error) => {
      console.error('微信登录失败:', error)
      // 微信登录失败，跳转到手机号验证页面
      wx.showModal({
        title: '微信登录失败',
        content: '请使用手机号验证登录',
        showCancel: false,
        confirmText: '去验证',
        success: () => {
          wx.navigateTo({
            url: '/pages/phone-verify/phone-verify'
          })
        }
      })
    })
  },

  /**
   * 显示手机号登录
   */
  showPhoneLoginForm() {
    wx.navigateTo({
      url: '/pages/phone-verify/phone-verify'
    })
  },

  /**
   * 隐藏手机号登录
   */
  hidePhoneLoginForm() {
    this.setData({
      showPhoneLogin: false
    })
  },

  /**
   * 切换协议同意状态
   */
  toggleAgreement() {
    this.setData({
      agreementChecked: !this.data.agreementChecked
    })
  },

  /**
   * 查看用户协议
   */
  viewUserAgreement() {
    wx.showModal({
      title: '用户协议',
      content: '这里是用户协议的主要内容，包括服务条款、用户权利义务等。特别说明：本平台不收集、存储任何真实照片，仅使用虚拟头像进行展示。',
      showCancel: false,
      confirmText: '我知道了'
    })
  },

  /**
   * 查看隐私政策
   */
  viewPrivacyPolicy() {
    wx.showModal({
      title: '隐私政策',
      content: '我们重视您的隐私保护。本应用采用虚拟头像技术，不会收集、存储或使用您的真实照片。我们仅收集必要的个人信息用于提供服务，并严格按照相关法律法规保护您的个人信息安全。',
      showCancel: false,
      confirmText: '我知道了'
    })
  },

  /**
   * 手机号输入
   */
  onPhoneInput(e) {
    this.setData({
      phone: e.detail.value
    })
  },

  /**
   * 验证码输入
   */
  onCodeInput(e) {
    this.setData({
      verificationCode: e.detail.value
    })
  },

  /**
   * 发送验证码
   */
  sendVerificationCode() {
    const { phone } = this.data
    
    if (!validatePhone(phone)) {
      showError('请输入正确的手机号')
      return
    }

    if (this.data.codeSending || this.data.countdown > 0) {
      return
    }

    this.setData({ codeSending: true })

    sendSmsCode(phone).then(() => {
      showSuccess('验证码已发送')
      this.startCountdown()
    }).catch((error) => {
      console.error('发送验证码失败:', error)
    }).finally(() => {
      this.setData({ codeSending: false })
    })
  },

  /**
   * 开始倒计时
   */
  startCountdown() {
    let countdown = 60
    this.setData({ countdown })
    
    const timer = setInterval(() => {
      countdown--
      this.setData({ countdown })
      
      if (countdown <= 0) {
        clearInterval(timer)
      }
    }, 1000)
  },

  /**
   * 手机号验证登录
   */
  handlePhoneLogin() {
    const { phone, verificationCode } = this.data
    
    if (!validatePhone(phone)) {
      showError('请输入正确的手机号')
      return
    }
    
    if (!verificationCode || verificationCode.length !== 6) {
      showError('请输入6位验证码')
      return
    }

    phoneLogin(phone, verificationCode).then((data) => {
      showSuccess('登录成功')
      this.redirectAfterLogin()
    }).catch((error) => {
      console.error('手机号登录失败:', error)
    })
  },

  /**
   * 登录后重定向
   */
  redirectAfterLogin() {
    const { redirectAfterLogin } = require('../../utils/router.js')
    redirectAfterLogin()
  }
})